package br.com.pfc.application.controller.atendimentos;

import br.com.pfc.application.controller.AuthenticationController;
import br.com.pfc.application.dao.AtendimentoDAO;
import br.com.pfc.application.service.atendimentos.AtendimentoService;
import br.com.pfc.application.service.equipamentos.EquipamentoService;
import br.com.pfc.model.Atendimento;
import br.com.pfc.model.Equipamento;
import br.com.pfc.util.AppConstantes;
import br.com.pfc.util.DataUtil;
import java.util.List;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Begin;
import org.jboss.seam.annotations.End;
import org.jboss.seam.annotations.FlushModeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;

/**
 * @author mucceli
 */
@Scope(ScopeType.CONVERSATION)
@Name("atendimentoCriarAction")
public class AtendimentoCriarController {

    @In
    EquipamentoService equipamentoService;
    @In(create = true)
    AtendimentoService atendimentoService;
    @In
    AtendimentoDAO atendimentoDAO;
    @In(create = true)
    AuthenticationController authenticator;
    @In
    DataUtil dataUtil;
    Atendimento atendimento = new Atendimento();
    private List<Equipamento> listaEquipamentos;
    private Integer localSelecionado;
    private Integer equipamentoSelecionado;
    private Integer usuarioSelecionado;
    
    private String paramDescricaoProblema;
    private static final String NOVO = "novo_atendimento";
    private static final String PRINCIPAL = "atendimentos";

    @Begin(flushMode = FlushModeType.MANUAL, nested = true)
    public String setup() {
        listaEquipamentos = equipamentoService.obterEquipamentos();
        equipamentoSelecionado = null;
        return NOVO;

    }

    @End
    public String criar() {
        atendimento.setDataAbertura(dataUtil.obtemDataAtual());
        atendimento.setStatus(AppConstantes.STATUS_ABERTO);
        atendimento.setDescricaoAtendimento(paramDescricaoProblema);
        atendimento.setUsuarioAbertura(atendimentoService.obterUsuarioPorNome(authenticator.getIdentity().getCredentials().getUsername()));
        atendimento.setEquipamento(atendimentoService.obterEquipamentoPorId(equipamentoSelecionado));
        atendimentoService.salvar(atendimento);
        return PRINCIPAL;
    }

    public List<Equipamento> getListaEquipamentos() {
        return listaEquipamentos;
    }

    public void setListaEquipamentos(List<Equipamento> listaEquipamentos) {
        this.listaEquipamentos = listaEquipamentos;
    }

    public String getParamDescricaoProblema() {
        return paramDescricaoProblema;
    }

    public void setParamDescricaoProblema(String paramDescricaoProblema) {
        this.paramDescricaoProblema = paramDescricaoProblema;
    }

    public Integer getEquipamentoSelecionado() {
        return equipamentoSelecionado;
    }

    public void setEquipamentoSelecionado(Integer equipamentoSelecionado) {
        this.equipamentoSelecionado = equipamentoSelecionado;
    }

    public Integer getLocalSelecionado() {
        return localSelecionado;
    }

    public void setLocalSelecionado(Integer localSelecionado) {
        this.localSelecionado = localSelecionado;
    }

    public Integer getUsuarioSelecionado() {
        return usuarioSelecionado;
    }

    public void setUsuarioSelecionado(Integer usuarioSelecionado) {
        this.usuarioSelecionado = usuarioSelecionado;
    }

    public Atendimento getAtendimento() {
        return atendimento;
    }

    public void setAtendimento(Atendimento atendimento) {
        this.atendimento = atendimento;
    }
}
